AWSの各サービスで使用されているIPアドレスを確認する方法 Windows/Linux/Python3
ご機嫌いかがでしょうか、豊崎です。
今回はAWSの各サービスで利用されているIPアドレスから該当のサービスのIPアドレスを抽出する方法をご紹介したいと思います。
AWSは以下のURLでAWSで利用されているIPレンジを公開しています。 https://ip-ranges.amazonaws.com/ip-ranges.json
WindowsとLinux、PythonそれぞれでのIPレンジの利用方法を書いていきたいと思います。
Windows
Windowsでは「AWS Tools for Windows PowerShell」が利用できるように準備をしておきます。
### 日付 PS C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell> Get-AWSPublicIpAddressRange -OutputPublicationDate 2019年1月22日 18:51:18 ### 特定のリージョンのみ PS C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell> Get-AWSPublicIpAddressRange -Region ap-northeast-1 IpPrefix IpAddressFormat Region Service -------- --------------- ------ ------- 52.194.0.0/15 Ipv4 ap-northeast-1 AMAZON 54.168.0.0/16 Ipv4 ap-northeast-1 AMAZON 54.238.0.0/16 Ipv4 ap-northeast-1 AMAZON 54.250.0.0/16 Ipv4 ap-northeast-1 AMAZON ・ ・ <省略> ・ ・ 2406:daff:4000::/40 Ipv6 ap-northeast-1 EC2 2400:6700:ff00::/64 Ipv6 ap-northeast-1 EC2 2406:da14::/36 Ipv6 ap-northeast-1 EC2 2406:da00:4000::/40 Ipv6 ap-northeast-1 EC2 ### 特定のサービスのみ PS C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell> Get-AWSPublicIpAddressRange -ServiceKey AMAZON_CONNECT IpPrefix IpAddressFormat Region Service -------- --------------- ------ ------- 13.210.2.192/26 Ipv4 ap-southeast-2 AMAZON_CONNECT 13.236.8.0/25 Ipv4 ap-southeast-2 AMAZON_CONNECT 18.182.96.64/26 Ipv4 ap-northeast-1 AMAZON_CONNECT 18.184.2.128/25 Ipv4 eu-central-1 AMAZON_CONNECT 18.233.213.128/25 Ipv4 us-east-1 AMAZON_CONNECT 18.236.61.0/25 Ipv4 us-west-2 AMAZON_CONNECT 35.158.127.64/26 Ipv4 eu-central-1 AMAZON_CONNECT 52.55.191.224/27 Ipv4 us-east-1 AMAZON_CONNECT 54.190.198.32/28 Ipv4 us-west-2 AMAZON_CONNECT ### 特定のサービスのIPアドレスのみ取得 PS C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell> Get-AWSPublicIpAddressRange -ServiceKey AMAZON_CONNECT | select IpPrefix IpPrefix -------- 13.210.2.192/26 13.236.8.0/25 18.182.96.64/26 18.184.2.128/25 18.233.213.128/25 18.236.61.0/25 35.158.127.64/26 52.55.191.224/27 54.190.198.32/28
Linux
Linuxでは「jq」を準備して、ip-ranges.jsonをローカル(今回はカレントに配置)に保存しておきます。
### 日付 $ jq .createDate < ip-ranges.json "2019-01-22-18-51-18" ### 特定のリージョンのみ $ jq '.prefixes[] | select(.region=="ap-northeast-1")' < ip-ranges.json { "ip_prefix": "52.194.0.0/15", "region": "ap-northeast-1", "service": "AMAZON" } { "ip_prefix": "54.168.0.0/16", "region": "ap-northeast-1", "service": "AMAZON" } ・ ・ <省略> ・ ・ { "ip_prefix": "3.112.64.0/23", "region": "ap-northeast-1", "service": "AMAZON" } { "ip_prefix": "18.182.96.64/26", "region": "ap-northeast-1", "service": "AMAZON_CONNECT" } ### 特定のサービスのみ $ jq -r '.prefixes[] | select(.service=="AMAZON_CONNECT")' < ip-ranges.json { "ip_prefix": "13.210.2.192/26", "region": "ap-southeast-2", "service": "AMAZON_CONNECT" } { "ip_prefix": "13.236.8.0/25", "region": "ap-southeast-2", "service": "AMAZON_CONNECT" } { "ip_prefix": "18.182.96.64/26", "region": "ap-northeast-1", "service": "AMAZON_CONNECT" } { "ip_prefix": "18.184.2.128/25", "region": "eu-central-1", "service": "AMAZON_CONNECT" } { "ip_prefix": "18.233.213.128/25", "region": "us-east-1", "service": "AMAZON_CONNECT" } { "ip_prefix": "18.236.61.0/25", "region": "us-west-2", "service": "AMAZON_CONNECT" } { "ip_prefix": "35.158.127.64/26", "region": "eu-central-1", "service": "AMAZON_CONNECT" } { "ip_prefix": "52.55.191.224/27", "region": "us-east-1", "service": "AMAZON_CONNECT" } { "ip_prefix": "54.190.198.32/28", "region": "us-west-2", "service": "AMAZON_CONNECT" } ### 特定のサービスのIPアドレスのみ取得 $ jq -r '.prefixes[] | select(.service=="AMAZON_CONNECT") | .ip_prefix' < ip-ranges.json 13.210.2.192/26 13.236.8.0/25 18.182.96.64/26 18.184.2.128/25 18.233.213.128/25 18.236.61.0/25 35.158.127.64/26 52.55.191.224/27 54.190.198.32/28
Python3
ちなみにPython(3.7.1で実行)だとこんな感じでしょうか
import urllib.request import json url = 'https://ip-ranges.amazonaws.com/ip-ranges.json' req = urllib.request.Request(url) with urllib.request.urlopen(req) as res: ipranges = json.load(res) ### 日付 print(ipranges['createDate']) ### 特定のリージョンのみ for key in ipranges['prefixes']: if key['region'] == 'ap-northeast-1': print(key) ### 特定のサービスのみ for key in ipranges['prefixes']: if key['service'] == 'AMAZON_CONNECT': print(key) ### 特定のサービスのIPアドレスのみ取得 for key in ipranges['prefixes']: if key['service'] == 'AMAZON_CONNECT': print(key['ip_prefix'])
さいごに
いかがでしたでしょうか。AWSで利用されているIPアドレスの調べ方についてご紹介いたしました。それぞれの実行環境によってお試しいただければと思います。誰かのお役に経てば幸いです。